/**
 * 1.class声明类
 * 2.constructor定义构造函数初始化
 * 3.extends继承父类
 * 4.super调用父级构造方法
 * 5.static定义静态方法和属性
 * 6.父类方法可以重写
 */

// ES5构造函数-手机类
function Phone(brand, price) {
  this.brand = brand;
  this.price = price;
}

// 添加方法
Phone.prototype.call = function () {
  console.log("我可以打电话");
};

// 实例化对象
const huaWei = new Phone("华为", 5999);
huaWei.call();
console.log(huaWei);

// ES6-class语法
class Shouji {
  // 静态属性
  static name = "手机";
  static change() {}

  // 私有属性
  #name = "私有属性";
  #change() {
    console.log(this.#name);
  }

  // 构造函数
  constructor(brand, price) {
    this.brand = brand;
    this.price = price;
  }

  call() {
    console.log("我也可以打电话");
    this.#change();
  }
}

const onePlus = new Shouji("1+", 1999);
onePlus.call();
console.log(onePlus);
